#include "src/Jeu.h"
#include <malloc.h>
#include <stdlib.h>
#include "src/Terrain.h"
void jeuInit(Jeu *J)
{
   // int x, y


	J->pers = initPerso(4 , 4);


	J->ter = initTerrain(J->ter);


	J->nb_Zombie = 1;
    J->tab_Zomb = malloc(J->nb_Zombie*sizeof(Zombie));
    J->tab_Zomb = initZombie(11, 11);
	/*

	for (i_fant=0; i_fant<pJeu->nb_fantomes; i_fant++)
    {
        do {
            x = rand()%pJeu->ter.dimx;
            y = rand()%pJeu->ter.dimy;
        } while (!terEstPositionPersoValide(&(pJeu->ter), x, y));

        pJeu->tab_fantomes[i_fant].x = x;
        pJeu->tab_fantomes[i_fant].y = y;

        pJeu->tab_fantomes[i_fant].direction = rand()%4;
    }
    */
}

void jeuLibere(Jeu * J)

{
    libereTerrain(J->ter);
	free(J->tab_Zomb);
}

Terrain *jeuGetTerrainPtr(Jeu * J)
{
	return J->ter;
}

Perso *jeuGetPersoPtr(Jeu * J)
{
    	return J->pers;
}

Terrain * jeuGetCstTerrainPtr(const Jeu * J)
{
    return J->ter;
}

const Perso *jeuGetCstPersoPtr(const Jeu *J )
{
    return J->pers;
}

void jeuActionClavier(Jeu *J, const char touche)
{
	switch(touche)
	{
		case 'g' :
				deplacementPersoGauche(J->pers, J->ter);
				break;
		case 'd' :
				deplacementPersoDroite(J->pers, J->ter);
				break;
		case 'h' :
				deplacementPersoHaut(J->pers, J->ter);
				break;
		case 'b' :
				deplacementPersoBas(J->pers, J->ter);
				break;
	}
}

//Defilement terrain d'un cran vers la gauche et nouvelle colonne
void defilementTerrain (Jeu *J, char *col)
{
int y, x;
if ( J->ter->tab[getCoordYPerso(J->pers)][getCoordXPerso(J->pers)+1]== '#')
        {
            deplacementPersoGauche(J->pers, J->ter);
        }

for(y=0;y<J->ter->dimY;++y)
{
        J->ter->tab[y][J->ter->dimX] = col[y];


                for(x=1;x<J->ter->dimX;++x)
                {
                        J->ter->tab[y][x] = J->ter->tab[y][x + 1];
                }
}
}


void jeuEvolue(Jeu *pJeu)
{
    /*int i_fant, testx, testy;
    Fantome *p_fant;
    int depx[] = {-1, 1, 0, 0};
    int depy[] = {0, 0, -1, 1};

    for (i_fant=0; i_fant<pJeu->nb_fantomes; i_fant++)
    {
        p_fant = &(pJeu->tab_fantomes[i_fant]);

        testx = p_fant->x + depx[p_fant->direction];
        testy = p_fant->y + depy[p_fant->direction];

        if (terEstPositionPersoValide(&(pJeu->ter), testx, testy))
        {
            p_fant->x = testx;
            p_fant->y = testy;
        }
        else {
             Changement de direction
            p_fant->direction = rand()%4;
        }
    }*/
}
